﻿#define _CRT_SECURE_NO_WARNINGS 1
//结构体
//
//#include<stdio.h>
//struct Stu
//{
//	char name[10];
//	char sex[5];
//	int age;
//};
//int main()
//{
//	return 0;
//}

//
//#include<stdio.h>
//struct C
//{
//	int a;
//	int b;
//};
//struct Stu
//{
//	int num;//变量
//	char name[10];//数组
//	char sex[5];
//	int* pb;//指针
//	struct C;//其他结构体
//	struct C* pc;//结构体指针
//};
//int main()
//{
//	return 0;
//}



//#include<stdio.h>
//typedef struct Stu
//{
//	char name[10];
//	char sex[5];
//	int age;
//}STU;//STU 是重命名产生新的类型
//
//int main()
//{
//	struct Stu s1;
//	struct Stu s2;
//	//重命名之后是s1 s2这种形式仍然可以使用
//	STU s5;
//	return 0;
//}


//#include<stdio.h>
//struct B
//{
//	int k;
//};
//struct S
//{
//	char C;
//	int num;
//	int arr[10];
//	double* pd;
//	struct B sb;
//	struct B* pb;
//};
//int main()
//{
//	double d = 3.14;
//	//按照顺序初始化
//	struct S s3 = { 'q',100,{1,2,3,4},&d,{99},NULL };
//	//指定成员来初始化
//	struct S s4 = { .num = 1000,.arr = {1,2,3,4,5} };
//	//只初始化部分，另外的全部为0
//	return 0;
//}



//#include<stdio.h>
//struct Book
//{
//	char name[20];
//	int price;
//};
//void print_s(struct Book b)
//{
//	printf("%s %d\n", b.name, b.price);
//}
//void Print(struct Book* pb)//结构体指针变量
//{
//	printf("%s %d\n", (*pb).name, (*pb).price);
//	printf("%s %d\n", pb->name, pb->price);
//}
//int main()
//{
//	struct Book b = { "C语言",55 };
//	print_s(b);//传变量
//	Print(&b);//传地址
//	printf("%s %d\n", b.name, b.price);
//	struct Book* pb = &b;//
//	printf("%s %d\n", pb->name, pb->price);//搭配指针使用
//	return 0;
//}



//#include<stdio.h>
//#include<string.h>
//struct S
//{
//	char name[20];
//	int age;
//};
//void set_s(struct S t)//传变量
//{
//	t.age = 18;
//	strcpy(t.name, "zhangsan");//字符串拷贝
//	//t.name="zhangsan"❌name是数组名，数组名是常量的地址
//}
//int main()
//{
//	struct S s = { "mingzi",0};
//	//写一个函数给s中存放数据
//	set_s(s);
//	printf("%s %d\n", s.name, s.age);
//	return 0;
//}



//#include<stdio.h>
//#include<string.h>
//struct S
//{
//	char name[20];
//	int age;
//};
//void set_s(struct S* t)//传地址，形参
//{
//	//(*t).age = 18;
//	t->age = 19;
//	//strcpy((*t).name, "zhangsan");//字符串拷贝
//	strcpy(t->name, "zhangsan");
//}
//int main()
//{
//	struct S s = { "mingzi",0 };
//	//写一个函数给s中存放数据
//	set_s(&s);//实参
//	printf("%s %d\n", s.name, s.age);
//	return 0;
//}